Skip to content

build(deps): Bump dev.vortex:vortex-jni from 0.75.0 to 0.76.0#197

Merged
dfa1 merged 2 commits into
mainfrom
dependabot/maven/dev.vortex-vortex-jni-0.76.0
Jul 7, 2026
Merged

build(deps): Bump dev.vortex:vortex-jni from 0.75.0 to 0.76.0#197
dfa1 merged 2 commits into
mainfrom
dependabot/maven/dev.vortex-vortex-jni-0.76.0

Conversation

@dependabot

@dependabot dependabot Bot commented on behalf of github Jul 4, 2026

Copy link
Copy Markdown
Contributor

Bumps dev.vortex:vortex-jni from 0.75.0 to 0.76.0.

Release notes

Sourced from dev.vortex:vortex-jni's releases.

0.76.0

Changes

⚠️ Breaks

✨ Features

🚀 Performance

... (truncated)

Commits
  • 0a45777 Add swimlane view to vortex-web that visualizes physical layout of columns in...
  • d9ded20 Convert extension type scalars to Value correctly (#8635)
  • c7e8ae9 Back VortexSession with ArcSwap for mutable but less errorprone session manag...
  • 3e7098c feat(vortex-bench): infra of SpatialBench on DuckDB, plain binary (#8598)
  • 797b650 fix(vortex-bench): map gs:// scheme to gcs storage label (#8630)
  • 5d3be01 Lock scheduler in GDB when launching functions (#8629)
  • 3077131 chore: forbid the locking Id constructors with a clippy lint (#8617)
  • 4a90e13 Patches have correct dtype by construction instead of normalised during array...
  • 79c6b0f chore: Python CUDA bridge: CI and buffer handoff ABI (#8618)
  • f2758d3 Lock file maintenance (#8616)
  • Additional commits viewable in compare view

Dependabot compatibility score

Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


Dependabot commands and options

You can trigger Dependabot actions by commenting on this PR:

  • @dependabot rebase will rebase this PR
  • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
  • @dependabot show <dependency name> ignore conditions will show all of the ignore conditions of the specified dependency
  • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
  • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
  • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)

@dependabot dependabot Bot added dependencies Pull requests that update a dependency file java Pull requests that update java code labels Jul 4, 2026
dependabot Bot and others added 2 commits July 7, 2026 07:13
Bumps [dev.vortex:vortex-jni](https://github.com/spiraldb/vortex) from 0.75.0 to 0.76.0.
- [Release notes](https://github.com/spiraldb/vortex/releases)
- [Commits](vortex-data/vortex@0.75.0...0.76.0)

---
updated-dependencies:
- dependency-name: dev.vortex:vortex-jni
  dependency-version: 0.76.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
… 0.76.0)

Bumping vortex-jni to 0.76.0 broke RustWritesJavaReadsIntegrationTest
#jniWriter_perZoneSum_readFromZoneMapTable with a ClassCastException
(DType$Bool -> DType$Primitive) while decoding the per-zone stats table.

0.76.0's zoned layout (spiraldb/vortex #7938) splits the format in two: the
canonical `vortex.zoned` id now stores an ordered aggregate-function spec list
in its metadata (proto: version byte + ZonedMetadataProto) and its stats table
drops the legacy per-stat `_is_truncated` Bool flags, while the legacy
`vortex.stats` alias keeps the Stat-bitset metadata. Our reader treated the two
ids as pure aliases and always reconstructed the legacy schema, so the extra
Bool fields no longer matched the encoded table and the positional struct decode
mismatched.

The reader now dispatches on the layout id: `vortex.zoned` goes through a new
ZonedStatsSchema.aggregateStatsTableDtype that parses the aggregate specs and
maps each known aggregate (max/min/sum/null_count/nan_count/...) to its stored
stat dtype, with no truncation flags; `vortex.stats` keeps the bitset path.
Unknown/nested-state aggregates (e.g. vortex.bounded_max) bail to the per-chunk
fallback rather than decode a misaligned table. The CLI stats inspector uses the
same dispatch. This is a genuine compatibility fix on top of the dependency
bump, not a rebase-conflict resolution (the rebase onto main was clean).

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
@dfa1 dfa1 force-pushed the dependabot/maven/dev.vortex-vortex-jni-0.76.0 branch from 4d4c742 to 94dec38 Compare July 7, 2026 05:29
@dfa1 dfa1 merged commit 9e20edc into main Jul 7, 2026
6 checks passed
@dependabot dependabot Bot deleted the dependabot/maven/dev.vortex-vortex-jni-0.76.0 branch July 7, 2026 05:32
dfa1 added a commit that referenced this pull request Jul 7, 2026
…cimal sum fallback (#197)

The aggregate-spec zone-map decoder added in #197 (commit 9e20edc) had two
post-merge review findings.

Overflow class: ProtoCursor guarded reads with `pos + len > bound`. A varint
length up to Long.MAX_VALUE overflows `pos + len` to negative, so the `> bound`
check is false and the guard passes — then `new byte[(int) len]` throws
NegativeArraySizeException, or `pos` advances negative and the next segment read
throws IndexOutOfBoundsException. This is untrusted file metadata (ADR 0003), so
it must never surface a raw JDK exception. Every length/offset check
(readAggregateSpecId message descent, readString, advance/skipField) is rewritten
overflow-safe: the invariant pos <= bound holds throughout, so `bound - pos >= 0`
never overflows and the guard becomes `len < 0 || len > bound - pos`. Malformed
metadata now falls back to per-chunk stats.

Decimal divergence: Rust's default_zoned_aggregate_fns (vortex-layout
zoned/writer.rs) emits a `sum` column whenever Sum.return_dtype is Some — which is
Some(Decimal(precision + 10)) for a Decimal column (sum/mod.rs) — while our
sumDtype returns null for Decimal. Dropping that field with `continue` reconstructs
{max,min,null_count} for an encoded {max,min,sum,null_count} table, so the
positional decode reads null_count out of the sum buffer. The reconstructor now
distinguishes "Rust also omits this" (nan_count over non-float per nan_count/mod.rs,
min/max over an unsupported column per min_max minmax_supported_dtype — safe skip)
from "Rust keeps a field we cannot map" (decimal sum, bounded_max/min nested state
— return null so the whole column falls back to correct-but-unpruned per-chunk
stats).

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
dfa1 added a commit that referenced this pull request Jul 7, 2026
…cimal sum fallback (#197)

The aggregate-spec zone-map decoder added in #197 (commit 9e20edc) had two
post-merge review findings.

Overflow class: ProtoCursor guarded reads with `pos + len > bound`. A varint
length up to Long.MAX_VALUE overflows `pos + len` to negative, so the `> bound`
check is false and the guard passes — then `new byte[(int) len]` throws
NegativeArraySizeException, or `pos` advances negative and the next segment read
throws IndexOutOfBoundsException. This is untrusted file metadata (ADR 0003), so
it must never surface a raw JDK exception. Every length/offset check
(readAggregateSpecId message descent, readString, advance/skipField) is rewritten
overflow-safe: the invariant pos <= bound holds throughout, so `bound - pos >= 0`
never overflows and the guard becomes `len < 0 || len > bound - pos`. Malformed
metadata now falls back to per-chunk stats.

Decimal divergence: Rust's default_zoned_aggregate_fns (vortex-layout
zoned/writer.rs) emits a `sum` column whenever Sum.return_dtype is Some — which is
Some(Decimal(precision + 10)) for a Decimal column (sum/mod.rs) — while our
sumDtype returns null for Decimal. Dropping that field with `continue` reconstructs
{max,min,null_count} for an encoded {max,min,sum,null_count} table, so the
positional decode reads null_count out of the sum buffer. The reconstructor now
distinguishes "Rust also omits this" (nan_count over non-float per nan_count/mod.rs,
min/max over an unsupported column per min_max minmax_supported_dtype — safe skip)
from "Rust keeps a field we cannot map" (decimal sum, bounded_max/min nested state
— return null so the whole column falls back to correct-but-unpruned per-chunk
stats).

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

dependencies Pull requests that update a dependency file java Pull requests that update java code

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant